﻿''' <summary>
''' Die Fliegende Festung des Boesen.=D
''' Fuerchtet euch.
''' </summary>
''' <remarks></remarks>
Public Class GebaeudeFliegendeFestung
    Inherits ObjektGebaeude
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("FLIEGENDEFESTUNG", neuSpieler, neuX, neuY, ObjektSpielfeld.Luftschlacht)
        GebaeudeLaden(True)
        getBildID(Spielfeld)
    End Sub
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuLeben As Integer, ByVal neuBesetzungszahl As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Feuerzahl As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("FLIEGENDEFESTUNG", neuSpieler, neuLeben, neuBesetzungszahl, neuX, neuY, Feuerzahl, ObjektSpielfeld.Luftschlacht)
        GebaeudeLaden(False)
        getBildID(Spielfeld)
    End Sub
    Public Sub New()
        MyBase.New("", -1, -1, -1, ObjektSpielfeld.Luftschlacht)
        Gebaeudename = "Fliegende Festung"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = 5
        Reichweite = 3
        Rechteck.Height = Hauptmenue.Feldbreite * 4
        Rechteck.Width = Hauptmenue.Feldbreite * 4
        Angriff = Angriffe.KugelKreis
        If Spieler = 0 Then
            Leben = -1
        Else
            Select Case DataSettings.CommanderWarsGameModus
                Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                    Leben = 2000
                Case Else
                    Leben = -1
            End Select
        End If
        Feuerbereite = 1
        Feuerladung = 1
        RotationsZenturm = New Point(Hauptmenue.Feldbreite * 3 / 2, Hauptmenue.Feldbreite * 5 / 2)
        WirdZu = "LUFT"
        Array.Resize(Variablen, 0)
        Verweisgebaeude = New Integer(,) {{-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {-1, 0}, {1, 0}, {2, 0}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {-1, 2}, {-2, 1}, {-2, -2}, {-1, -3}, {2, -3}, {3, -2}, {3, 1}, {2, 2}}
    End Sub

    Private Sub GebaeudeLaden(ByVal MitMiniGeschuetzen As Boolean)
        Gebaeudename = "Fliegende Festung"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = 5
        Reichweite = 3
        Rechteck.Height = Hauptmenue.Feldbreite * 4
        Rechteck.Width = Hauptmenue.Feldbreite * 4
        Angriff = Angriffe.KugelKreis
        If Spieler = 0 Then
            Leben = -1
        Else
            Select Case DataSettings.CommanderWarsGameModus
                Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                    Leben = 2000
                Case Else
                    Leben = -1
            End Select
        End If
        Feuerbereite = 1
        Feuerladung = 1
        RotationsZenturm = New Point(Hauptmenue.Feldbreite * 3 / 2, Hauptmenue.Feldbreite * 5 / 2)
        WirdZu = "LUFT"
        Array.Resize(Variablen, 0)
        Verweisgebaeude = New Integer(,) {{-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {-1, 0}, {1, 0}, {2, 0}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}}
        If Rechteck.X > 0 And Rechteck.Y > 1 Then
            For I = 0 To Verweisgebaeude.GetLength(0) - 1
                If Not Objektverwalter.Spielfeld Is Nothing Then
                    Objektverwalter.Spielfeld.Landschaften(Rechteck.X + Verweisgebaeude(I, 0), Rechteck.Y + Verweisgebaeude(I, 1), ObjektSpielfeld.Luftschlacht).Gebaeude = New GebaeudeVerweis(Spieler, Rechteck.X, Rechteck.Y, ObjektSpielfeld.Luftschlacht)
                End If
            Next
        End If
        If Objektverwalter.Spielfeld IsNot Nothing Then
            If MitMiniGeschuetzen = True Then
                'Wir erstellen die Minigeschuetze der Festung
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 2, Rechteck.Y + 2, ObjektSpielfeld.Luftschlacht).Gebaeude = New GebaeudeFliegendesMinigeschuetz_S(Spieler, Rechteck.X + 2, Rechteck.Y + 2, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 1, Rechteck.Y + 2, ObjektSpielfeld.Luftschlacht).Gebaeude = New GebaeudeFliegendesMinigeschuetz_S(Spieler, Rechteck.X - 1, Rechteck.Y + 2, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 2, Rechteck.Y + 1, ObjektSpielfeld.Luftschlacht).Gebaeude = New GebaeudeFliegendesMinigeschuetz_W(Spieler, Rechteck.X - 2, Rechteck.Y + 1, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 2, Rechteck.Y - 2, ObjektSpielfeld.Luftschlacht).Gebaeude = New GebaeudeFliegendesMinigeschuetz_W(Spieler, Rechteck.X - 2, Rechteck.Y - 2, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 1, Rechteck.Y - 3, ObjektSpielfeld.Luftschlacht).Gebaeude = New GebaeudeFliegendesMinigeschuetz_N(Spieler, Rechteck.X - 1, Rechteck.Y - 3, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 2, Rechteck.Y - 3, ObjektSpielfeld.Luftschlacht).Gebaeude = New GebaeudeFliegendesMinigeschuetz_N(Spieler, Rechteck.X + 2, Rechteck.Y - 3, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 3, Rechteck.Y - 2, ObjektSpielfeld.Luftschlacht).Gebaeude = New GebaeudeFliegendesMinigeschuetz_O(Spieler, Rechteck.X + 3, Rechteck.Y - 2, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 3, Rechteck.Y + 1, ObjektSpielfeld.Luftschlacht).Gebaeude = New GebaeudeFliegendesMinigeschuetz_O(Spieler, Rechteck.X + 3, Rechteck.Y + 1, Nothing)
            End If
        End If
    End Sub
    Public Overrides Function GetMaxLeben() As Integer
        Select Case DataSettings.CommanderWarsGameModus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                If Leben > 2000 Then Return Leben
                Return 2000
            Case Else
                If Leben > -1 Then Return Leben
                Return -1
        End Select
    End Function
    Public Overrides Sub Feuer(ByVal X As Integer, ByVal Y As Integer)
        If DataSettings.KonsolenSpielBefehle Then
            Konsole.Write("Fire with a Flying Fortress.")
        End If
        GenerateNetzBefehlGebaeudeFeuer(X, Y)
        KugelFeuer()
        ObjektLadeklasse.SiloExplosion(Reichweite, "LAND", Rechteck.X, Rechteck.Y, ObjektSpielfeld.Bodenschlacht)
        Feuerbereit = -1
        Objektverwalter.Spielfeld.Regeln.CheckSieg()
        Dim M As ObjektSpielMenue = Objektverwalter.Menue
        M.Spielmodus = ObjektSpielMenue.Spielmodi.Nichts
    End Sub
    Public Overrides Sub FeuerradiusAnzeigen()
        KreisAnzeigen("Rot")
        MusikEngine.LoadWav(DataSettings.Resourcenpfad + "Sound\Sound Effects\Overworld\Einheitausgewaehlt.wav", False)
        Dim M As ObjektSpielMenue = Objektverwalter.Menue
        M.Spielmodus = ObjektSpielMenue.Spielmodi.FeuerradiusAnzeigen
    End Sub
    Public Overrides Sub DOSpielFrame()
        Feuerbereit = 1
    End Sub
    Public Overrides Function GetLandschaftsuntergrund() As String()
        Return New String() {"LUFT"}
    End Function
    Public Overrides Function GetAngriffsFelder() As System.Drawing.Point()
        Return GetKreisFelder()
    End Function

End Class
